/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.eurotrader.utils;

import br.com.eurotrader.controller.BaseController;
import com.icesoft.faces.component.ext.HtmlInputSecret;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlInputTextarea;
import com.icesoft.faces.component.ext.HtmlPanelGrid;
import com.icesoft.faces.component.ext.HtmlPanelGroup;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.paneltabset.PanelTabSet;
import java.util.ArrayList;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.component.UISelectBoolean;
import javax.faces.component.UISelectMany;
import javax.faces.component.UISelectOne;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;

/**
 *
 * @author Anjo
 */
@Named(value="botoes")
public class MetodosBotoes {

//    public void inserir(ActionEvent event) {
//        BaseController controller = getControllerPagina();
//        controller.objetoLimpo();
//        controller.setFormularioDesabilitado(false);
////        String nomeDaPagina = FacesContext.getCurrentInstance().getViewRoot().getViewId().toString();
////        nomeDaPagina = nomeDaPagina.substring(1, nomeDaPagina.indexOf("."));
////        System.out.println("nome" + nomeDaPagina);
////
////        System.out.println("erro1");
////        BaseController controler = (BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller");
////        System.out.println("erro2");
////        controler.objetoLimpo();
//
//
//
//        //  PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        //   pagina.setAtualizarDados(false);
//
////        pagina.setAlterando(false);
////        abrirPopUps(event, popFormulario);
////
////        pagina.getPagina().setObjetoSelecionado(pagina.getPagina().getController().objetoLimpo());
////        pagina.setBotaoConsultaComplexa(true);
////        pagina.setBotaoConsultaSimples(true);
////
////        FocarCampo(pagina.getPagina().getFocarComponente());
//    }
//    public void salvar(ActionEvent event) {
//        BaseController controller = getControllerPagina();
//      //  controller.salvar();
//        controller.setFormularioDesabilitado(true);
//
////        String nomeDaPagina = FacesContext.getCurrentInstance().getViewRoot().getViewId().toString();
////        nomeDaPagina = nomeDaPagina.substring(1, nomeDaPagina.indexOf("."));
////        System.out.println("nome" + nomeDaPagina);
////
////        System.out.println("erro1");
////        BaseController controler = (BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller");
////        System.out.println("erro2");
////        controler.salvar();
//
//
//    }
//    public void atualizar(ActionEvent event) {
//        BaseController controller = getControllerPagina();
//        System.out.println("atualizar o objeto");
//        //controller.atualizar();
//        controller.setFormularioDesabilitado(true);
////        String nomeDaPagina = FacesContext.getCurrentInstance().getViewRoot().getViewId().toString();
////        nomeDaPagina = nomeDaPagina.substring(1, nomeDaPagina.indexOf("."));
////        System.out.println("nome" + nomeDaPagina);
////
////        System.out.println("erro1");
////        BaseController controler = (BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller");
////        System.out.println("erro2");
////        controler.atualizar();
//    }
//    public void excluir(ActionEvent event) {
//        System.out.println("erro1");
//        BaseController controller = getControllerPagina();
//      //  controller.excluir();
//        controller.setFormularioDesabilitado(true);
//        System.out.println("erro2");
//        //controler.excluir();
//    }
    public BaseController getControllerPagina() {
        String nomeDaPagina = FacesContext.getCurrentInstance().getViewRoot().getViewId().toString();
        nomeDaPagina = nomeDaPagina.substring(1, nomeDaPagina.indexOf("."));
        return (BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller");
       // return controler;
    }

    public Object getObjetoController() {
        String nomeDaPagina = FacesContext.getCurrentInstance().getViewRoot().getViewId().toString();
        nomeDaPagina = nomeDaPagina.substring(1, nomeDaPagina.indexOf("."));
        return ((BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller")).getObjeto();
       // return controler;
    }

      public BaseController getControllerProximaPagina(String nomeDaPagina) {
        System.out.println("nome" + nomeDaPagina);
        return  (BaseController) FacesUtils.getManagedBean(nomeDaPagina + "Controller");
        
    }
//    public void eventoQuandoTabelaClicada(ClickActionEvent event) {
//        alterar(event, false);
//    }
//
//    public void alterar(ClickActionEvent event, boolean eventoQuandoTabelaClicadaConsulta) {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        if (pagina.getNomeDaPagina().toUpperCase().equals("LOG DE OPERAÇÕES")) {
//            ((LogOperacoesController) ClasseMetodosGerais.pegaManagedBean("LogOperacoesController")).visualizarRegistro(event);
//        } else {
//            if (!eventoQuandoTabelaClicadaConsulta) {
//                pagina.setAberturaConsultaPeloFormulario(false);
//            }
//            if (!pagina.isAberturaConsultaPeloFormulario()) {
//                if (event.isDblClick()) {
//                    if (eventoQuandoTabelaClicadaConsulta) {
//                        pagina.setBotaoConsultaComplexa(false);
//                        pagina.setBotaoConsultaSimples(false);
//                    } else {
//                        pagina.setBotaoConsultaComplexa(true);
//                        pagina.setBotaoConsultaSimples(true);
//                    }
//                    if (!verificaObjetoSelecionado(pagina.getPagina())) {
//                        return;
//                    }
//                    FocarCampo(pagina.getPagina().getFocarComponente());
//                    //   inserindo = false;
//                    pagina.setAlterando(true);
//                    //setAlterando(true);
//                    //  if (!styleConsulta.equals("left:0px; top:0px; height:0px; width:0px; position:absolute; z-index:5;")){
//                    abrirPopUps(event, popFormulario);
//                    //    }
//                    pagina.setAtualizarDados(false);
//                //    aberturaConsultaSimplesPeloFormulario = false;
//                }
//            }
//        }
//    }
//
//
//    public void salvar(ActionEvent event) {
//
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//
//        boolean naoOcorreuErro = true;
//        try {
//            if (pagina.isAlterando()) {
//                pagina.getPagina().getController().atualizar(pagina.getPagina().getObjetoSelecionado());
//            } else {
//                pagina.getPagina().getObjetoSelecionado().setId(null);
//                TransactionStatus status = transac.getTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED));
//                try {
//                    pagina.getPagina().getController().salvar(pagina.getPagina().getObjetoSelecionado());
//                    transac.commit(status);
//                } catch (Exception e) {
//                    transac.rollback(status);
//                    FacesUtils.mensError("Erro ao inserir o registro!",
//                            " Uma ou mais funções não foram executadas corretamente, para segurança nada foi gravado ou realizado, informe ao administrador do sistema o erro seguinte: " + e.toString());
//                    naoOcorreuErro = false;
//                    return;
//                }
//            }
//        } catch (Exception e) {
//            FacesUtils.mensError("Operação Cancelada!",
//                    " Não foi possível realizar a manutenção do registro porque um erro interno ocorreu, informe ao adminstrador do sistema: " + e.toString());
//            naoOcorreuErro = false;
//            return;
//        }
//        if (naoOcorreuErro) {
//            pagina.getPagina().setObjetoSelecionado(pagina.getPagina().getController().objetoLimpo());
//
//            pagina.setAtualizarDados(true);
//            if ((!pagina.getPaginaAnterior().equals("")) || (pagina.isAlterando())) {
//                fecharPopUps(event, popFormulario);
//            } else {
//                if (event.getComponent().findComponent("pTabSetGeral") != null) {
////                limparFormularioInserir(event.getComponent().findComponent("pTabSetGeral:panelCampos"));
////
////                if (event.getComponent().findComponent("pTabSetGeral:panelCampos1") != null) {
////                    System.out.println("-==================Entrei aqui para limpar=-------------------");
////                    limparFormularioInserir(event.getComponent().findComponent("pTabSetGeral:panelCampos1"));
////                }
////                if (event.getComponent().findComponent("pTabSetGeral:panelCampos2") != null) {
////                    limparFormularioInserir(event.getComponent().findComponent("pTabSetGeral:panelCampos2"));
////                }
////                if (event.getComponent().findComponent("pTabSetGeral:panelCampos3") != null) {
////                    limparFormularioInserir(event.getComponent().findComponent("pTabSetGeral:panelCampos3"));
////                }
//                } else {
//                    limparFormularioInserir(event.getComponent().findComponent("panelCampos"));
//                }
//                FocarCampo(pagina.getPagina().getFocarComponente());
//            }
//            if (event.getComponent().findComponent("pTabSetGeral") != null) {
//                ((PanelTabSet) event.getComponent().findComponent("pTabSetGeral")).setSelectedIndex(0);
//            }
//            pagina.getPagina().renderizar();
//            pagina.setAlterando(false);
//            limparMemoria(pagina, event);
//        }
//    //  abrirPopUps(event, popConsSimples);
//    }
//    JtaTransactionManager transac = (JtaTransactionManager) ClasseMetodosGerais.pegaManagedBean("txManager");
//
//
//
//    public void cancelar(ActionEvent event) {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        pagina.getPagina().setObjetoSelecionado(pagina.getPagina().getController().objetoLimpo());
//        pagina.setAtualizarDados(true);
//        pagina.setFormularioValidado(true);
//        if (pagina.getPaginaAnterior().equals("")) {
//            fecharPopUps(event, popFormulario);
//        }
//        limparMemoria(pagina, event);
//    }
//
//
//    private void limparMemoria(PaginaSistema pagina, ActionEvent event) {
//        if (pagina.getPagina().getController() instanceof InterfaceLixeiro) {
//            ((InterfaceLixeiro) pagina.getPagina().getController()).limparMemoria(event);
//        }
//    }
//
//    public void confirmarExclusao(ActionEvent event) {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        boolean naoOcorreuErro = true;
//        try {
//            pagina.getPagina().getController().excluir(pagina.getPagina().getObjetoSelecionado());
//        } catch (Exception e) {
//            FacesUtils.mensInfo("Operação Cancelada!", " Não foi possível excluir o registro porque ele é referenciado por outros registros ou um erro ocorreu." + e.toString() + " - " +
//                    e.getMessage());
//            naoOcorreuErro = false;
//            return;
//        }
//        if (naoOcorreuErro) {
//            pagina.getPagina().setObjetoSelecionado(pagina.getPagina().getController().objetoLimpo());
//            pagina.setAtualizarDados(true);
//
//            fecharPopUps(event, popExcluir);
//            fecharPopUps(event, popFormulario);
//
//            pagina.getPagina().renderizar();
//            pagina.getModeloConsultaSimples().setRowModel(null);
//            refleshComponentes(event);
//            limparMemoria(pagina, event);
//        }
//    }
//
//    public void cancelarExclusao(ActionEvent event) {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        pagina.setAtualizarDados(false);
//        fecharPopUps(event, popExcluir);
//        FocarCampo(pagina.getPagina().getFocarComponente());
//    }
//
//    public void excluir(ActionEvent event) {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        if (!verificaObjetoSelecionado(pagina.getPagina())) {
//            return;
//        }
//        pagina.setAtualizarDados(false);
//        abrirPopUps(event, popExcluir);
//    }
//
//
//    public String voltaPagina() {
//        PaginaSistema pagina = sessao.getObjetoPagina(FacesContext.getCurrentInstance().getViewRoot().getViewId().hashCode(), FacesContext.getCurrentInstance().hashCode());
//        if (pagina.isFormularioValidado()) {
//            if (!pagina.getPaginaAnterior().equals("")) {
//                String irPara = pagina.getPaginaAnterior();
//                pagina.setPaginaAnterior("");
//                pagina.setFormularioAberto(false);
//                sessao.setAbertura(false);
//                sessao.limparListasConsultas();
//                return irPara;
//            }
//        }
//    }
//    private Boolean flagPanelConsulta = false;
//    private Boolean flagPanelFormulario = true;
//
//    public Boolean getFlagPanelConsulta() {
//        System.out.println("getei aqui" + flagPanelConsulta);
//        return flagPanelConsulta;
//    }
//
//    public void setFlagPanelConsulta(Boolean flagPanelConsulta) {
//        if (flagPanelConsulta) {
//            flagPanelFormulario = false;
//        } else {
//            flagPanelConsulta = true;
//        }
//        this.flagPanelConsulta = flagPanelConsulta;
//        System.out.println("setei aqui" + flagPanelConsulta);
//    }
//
//    public Boolean getFlagPanelFormulario() {
//        System.out.println("getei aqui1" + flagPanelFormulario);
//        return flagPanelFormulario;
//    }
//
//    public void setFlagPanelFormulario(Boolean flagPanelFormulario) {
//        if (flagPanelFormulario) {
//            flagPanelConsulta = false;
//        } else {
//            flagPanelConsulta = true;
//        }
//        this.flagPanelFormulario = flagPanelFormulario;
//        System.out.println("setei aqui1" + flagPanelFormulario);
//    }

//    public void alterar(ClickActionEvent event) {
//        if (event.isDblClick()) {
//            // setFlagPanelConsulta(Boolean.FALSE);
//            setFlagPanelFormulario(Boolean.TRUE);
////            FacesContext context = FacesContext.getCurrentInstance();
////            Application application = context.getApplication();
////            ViewHandler viewHandler = application.getViewHandler();
////            UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
////            context.setViewRoot(viewRoot);
////            context.renderResponse(); //Optional
//
//            UIInput input = (UIInput) FacesContext.getCurrentInstance().getViewRoot().findComponent("testes");
//            input.setValue(null);
//            input.setLocalValueSet(false);
//            input.setSubmittedValue(null);
//            // inputText.requestFocus();
//        }
//    }
//    public void editar(ActionEvent event) {
//        BaseController controller = getControllerPagina();
//        controller.FormularioPanel(event);
//        controller.getInputText().requestFocus();
//        controller.setFormularioDesabilitado(false);
////        if (flagPanelFormulario) {
////            flagPanelConsulta = false;
////        } else {
////            flagPanelConsulta = true;
////        }
//        // flagPanelFormulario = flagPanelFormulario;
////        FacesContext context = FacesContext.getCurrentInstance();
////
////        //FacesContext context = FacesContext.getCurrentInstance();
////        Application application = context.getApplication();
////        ViewHandler viewHandler = application.getViewHandler();
////        UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
////        context.setViewRoot(viewRoot);
////        context.renderResponse(); //Optional
////        // Application application = context.getApplication();
////        //  ViewHandler viewHandler = application.getViewHandler();
////        context.getViewRoot().processSaveState(context);
//
//        // context.getViewRoot().processApplication(context);
//        System.out.println("aqui2");
//        //   context.getViewRoot().processDecodes(context);
//        System.out.println("aqui");
////        context.getViewRoot().processValidators(context);
////        System.out.println("aqui1");
////
////        context.getViewRoot().processUpdates(context);
////        //  UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
////        context.setViewRoot(viewRoot);
////        getControllerPagina().getInputText().setSubmittedValue(null);
//
//
//
//        //  context.getViewRoot().processUpdates(context);
//        //   context.renderResponse();
//
//
//
//    }
    private void limparCampos(HtmlPanelGrid compp, UIComponent comp) {
        ArrayList listaComp = (ArrayList) compp.getChildren();
        forLimpaCampos(listaComp, comp);
    }

    private void limparCampos(HtmlPanelGroup compp, UIComponent comp) {
        ArrayList listaComp = (ArrayList) compp.getChildren();
        forLimpaCampos(listaComp, comp);
    }

    private void limparFormulario(UIComponent compnovo) {
        ArrayList lista = (ArrayList) compnovo.getChildren();
        for (int i = 0; i < lista.size(); i++) {
            UIComponent comp = (UIComponent) lista.get(i);
            if ((comp.getClass() == HtmlPanelGroup.class) || (comp.getClass() == HtmlPanelGrid.class)) {
                if (comp.getClass() == HtmlPanelGroup.class) {
                    HtmlPanelGroup compp = (HtmlPanelGroup) comp;
                    limparCampos(compp, comp);
                } else if (comp.getClass() == HtmlPanelGrid.class) {
                    HtmlPanelGrid compp = (HtmlPanelGrid) comp;
                    limparCampos(compp, comp);
                }
            }
        }
    }

    private void forLimpaCampos(ArrayList listaComp, UIComponent comp) {
        for (int j = 0; j < listaComp.size(); j++) {
            UIComponent component = (UIComponent) listaComp.get(j);
            if (component instanceof UIInput) {
                UIInput input = (UIInput) comp.getChildren().get(j);
                input.setSubmittedValue(null);
                //  input.resetValue();
            } else if (component instanceof HtmlSelectOneMenu) {
                HtmlSelectOneMenu input = (HtmlSelectOneMenu) comp.getChildren().get(j);
                input.setSubmittedValue(null);
                // System.out.println("Select  HtmlSelectOneMenu");
            } else if (component instanceof javax.faces.component.html.HtmlSelectOneMenu) {
                HtmlSelectOneMenu input = (HtmlSelectOneMenu) comp.getChildren().get(j);
                input.setSubmittedValue(null);
                //    System.out.println("Select  HtmlSelectOneMenu2");
            } else if (component instanceof UISelectBoolean) {
                UISelectBoolean input = (UISelectBoolean) comp.getChildren().get(j);
                input.setSubmittedValue(null);
                //   System.out.println("selectBoolean");
            } else if (component instanceof UISelectMany) {
                UISelectMany input = (UISelectMany) comp.getChildren().get(j);
                input.setSubmittedValue(null);
                //  System.out.println("SelectMany");
            } else if (component instanceof UISelectOne) {
                UISelectOne input = (UISelectOne) comp.getChildren().get(j);
                input.setSubmittedValue(null);
            } else if (component instanceof HtmlPanelGrid) {
                HtmlPanelGrid compp = (HtmlPanelGrid) component;
                limparCampos(compp, component);
            } else if (component instanceof HtmlPanelGroup) {
                HtmlPanelGroup compp = (HtmlPanelGroup) component;
                limparCampos(compp, component);
            }
        }
    }

    public void metodoLimparDoCancelar(ActionEvent event) {
        if (event.getComponent().findComponent("pTabSetGeral") != null) {
            // System.out.println("entrei aqui");
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos") != null) {
                //       System.out.println("entrei aqui1");
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos1") != null) {
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos1"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos2") != null) {
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos2"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos3") != null) {
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos3"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos4") != null) {
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos4"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos5") != null) {
                limparFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos5"));
            }
            ((PanelTabSet) event.getComponent().findComponent("pTabSetGeral")).setSelectedIndex(0);

        }
        if (event.getComponent().findComponent("panelCampos") != null) {
            //  System.out.println("entrei aqui2");
            limparFormulario(event.getComponent().findComponent("panelCampos"));
        }
    }

    public boolean metodoValidarCampos(ActionEvent event) {
        retorno = true;
        if (event.getComponent().findComponent("pTabSetGeral") != null) {
            // System.out.println("entrei aqui");
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos") != null) {
                //       System.out.println("entrei aqui1");
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos1") != null) {
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos1"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos2") != null) {
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos2"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos3") != null) {
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos3"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos4") != null) {
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos4"));
            }
            if (event.getComponent().findComponent("pTabSetGeral:panelCampos5") != null) {
                validarFormulario(event.getComponent().findComponent("pTabSetGeral:panelCampos5"));
            }
            ((PanelTabSet) event.getComponent().findComponent("pTabSetGeral")).setSelectedIndex(0);

        }
        if (event.getComponent().findComponent("panelCampos") != null) {
            //  System.out.println("entrei aqui2");
            validarFormulario(event.getComponent().findComponent("panelCampos"));
        }
        return retorno;
    }

    private boolean retorno = true;

    private void validarCampos(HtmlPanelGrid compp, UIComponent comp) {
        ArrayList listaComp = (ArrayList) compp.getChildren();
        forValidarCampos(listaComp, comp);
    }

    private void validarCampos(HtmlPanelGroup compp, UIComponent comp) {
        ArrayList listaComp = (ArrayList) compp.getChildren();
        forValidarCampos(listaComp, comp);
    }

    private void validarFormulario(UIComponent compnovo) {
        ArrayList lista = (ArrayList) compnovo.getChildren();
        for (int i = 0; i < lista.size(); i++) {
            UIComponent comp = (UIComponent) lista.get(i);
            if ((comp.getClass() == HtmlPanelGroup.class) || (comp.getClass() == HtmlPanelGrid.class)) {
                if (comp.getClass() == HtmlPanelGroup.class) {
                    HtmlPanelGroup compp = (HtmlPanelGroup) comp;
                    validarCampos(compp, comp);
                } else if (comp.getClass() == HtmlPanelGrid.class) {
                    HtmlPanelGrid compp = (HtmlPanelGrid) comp;
                    validarCampos(compp, comp);
                }
            }
        }
        
    }

    private void forValidarCampos(ArrayList listaComp, UIComponent comp) {
        for (int j = 0; j < listaComp.size(); j++) {
            UIComponent component = (UIComponent) listaComp.get(j);
            if (component instanceof UIInput) {
                UIInput input = (UIInput) comp.getChildren().get(j);
                if ((input.getId().toUpperCase().charAt(0) == 'N') && (input.getId().toUpperCase().charAt(1) == 'N')) {
                    if ((input.getValue() == null) || (input.getValue().toString().trim().equals(""))) {
                        if (input instanceof HtmlInputText) {
                            ((HtmlInputText) input).requestFocus();
                        } else if (input instanceof HtmlSelectOneMenu) {
                            ((HtmlSelectOneMenu) input).requestFocus();
                        } else if (input instanceof HtmlInputSecret) {
                            ((HtmlInputSecret) input).requestFocus();
                        } else if (input instanceof HtmlInputTextarea) {
                            ((HtmlInputTextarea) input).requestFocus();
                        }
                        FacesUtils.addInfoMessage(input.getClientId(), "Erro de Validação. Valor é Obrigatório.");
                        retorno =  false;
                    }
                }
                //  input.resetValue();
            } else if (component instanceof HtmlPanelGrid) {
                HtmlPanelGrid compp = (HtmlPanelGrid) component;
                validarCampos(compp, component);
            } else if (component instanceof HtmlPanelGroup) {
                HtmlPanelGroup compp = (HtmlPanelGroup) component;
                validarCampos(compp, component);
            }
        }
    }
}
